<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-19-wolfcrypt-api-random.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:42:37 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><!-- /Added by HTTrack -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Generator" content="iWeb 3.0.4"/>
<meta name="iWeb-Build" content="local-build-20170103"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta name="viewport" content="width=770"/>
<title>wolfSSL - Docs | wolfCrypt Manual - Chapter 18.19 (Random Number Generation)</title>
<link rel="stylesheet" type="text/css" media="screen,print" href="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/Docs-wolfssl-manual-18-19-wolfcrypt-api-random.css"/>
<!--[if lt IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/Docs-wolfssl-manual-18-19-wolfcrypt-api-randomIE.css'/><![endif]-->
<!--[if gte IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Media/IE8.css'/><![endif]-->
<script type="text/javascript" src="Scripts/iWebSite.js"></script>
<script type="text/javascript" src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/Docs-wolfssl-manual-18-19-wolfcrypt-api-random.js"></script>
<meta name="description" content="wolfSSL - Docs | wolfCrypt Manual - Chapter 18.19 (Random Number Generation)"/><meta name="keywords" content="embedded ssl, ssl library, embedded security, openssl alternative, ssl api, ssl, tls, cyassl, openssl replacement, openssl api, ssl functions, small openssl, smart grid, connected home, ecc, lightweight ssl, suite b, encryption security software, ssl inspection"/><meta name="robots" content="follow,index"/> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','../../www.google-analytics.com/analytics.js','ga');ga('create','UA-64826966-1','auto');ga('send','pageview');</script>
 
<script>//<![CDATA[
window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(c){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("../../assets.zendesk.com/embeddable_framework/main.js","wolfssl.zendesk.com");
//]]></script>
  </head>
<body style="background: rgb(255, 255, 255); margin: 0pt; " onload="onPageLoad();">
<div style="text-align: center; ">
<div style="margin-bottom: 20px; margin-left: auto; margin-right: auto; margin-top: 20px; overflow: hidden; position: relative; word-wrap: break-word;  background: rgb(255, 255, 255); text-align: left; width: 770px; " id="body_content">
<div style="float: left; margin-left: 0px; position: relative; width: 770px; z-index: 0; " id="nav_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div style="clear: both; height: 0px; line-height: 0px; " class="spacer"> </div>
</div>
<div style="float: left; height: 0px; line-height: 0px; margin-left: 0px; position: relative; width: 770px; z-index: 10; " id="header_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
</div>
<div style="margin-left: 0px; position: relative; width: 770px; z-index: 5; " id="body_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id1" style="height: 38px; left: 375px; position: absolute; top: 157px; width: 361px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_361_38" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style">wolfSSL Manual</p>
</div>
</div>
</div>
<div id="id2" style="height: 24px; left: 193px; position: absolute; top: 122px; width: 268px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_268_24" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_1"><a class="class1" title="Docs.html" href="Docs.html">Docs</a> <span class="style">-&gt;</span> <span class="style_1">wolfSSL Manual</span></p>
</div>
</div>
</div>
<div style="height: 1px; width: 698px;  height: 1px; left: 37px; position: absolute; top: 220px; width: 698px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 698px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_1.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 698px; "/>
</div>
</div>
<div style="height: 37px; width: 545px;  height: 37px; left: 191px; position: absolute; top: 80px; width: 545px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 545px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_2.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 545px; "/>
</div>
</div>
<div id="id3" style="height: 25px; left: 200px; position: absolute; top: 84px; width: 43px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_43_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class2" title="Home.html" href="Home.html">Home</a></p>
</div>
</div>
</div>
<div id="id4" style="height: 25px; left: 365px; position: absolute; top: 84px; width: 72px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_72_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class3" title="https://wolfssl.com/wolfSSL/download/downloadForm.php" href="https://wolfssl.com/wolfSSL/download/downloadForm.php">Download</a></p>
</div>
</div>
</div>
<div id="id5" style="height: 25px; left: 439px; position: absolute; top: 84px; width: 59px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_59_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class4" title="License.html" href="License.html">License</a></p>
</div>
</div>
</div>
<div id="id6" style="height: 25px; left: 499px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class5" title="Blog/Blog.html" href="Blog/Blog.html">Blog</a></p>
</div>
</div>
</div>
<div id="id7" style="height: 25px; left: 589px; position: absolute; top: 84px; width: 80px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_80_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class6" title="Community.html" href="Community.html">Community</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 245px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_3.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 296px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_4.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 363px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_5.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 438px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_6.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 498px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_7.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 589px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_8.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id8" style="height: 25px; left: 671px; position: absolute; top: 84px; width: 61px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_61_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class7" title="Contact.html" href="Contact.html">Contact</a></p>
</div>
</div>
</div>
<div id="id9" style="height: 25px; left: 249px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class8" title="About.html" href="About.html">About</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 670px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_9.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id10" style="height: 25px; left: 298px; position: absolute; top: 84px; width: 63px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_63_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class9" title="Products.html" href="Products.html">Products</a></p>
</div>
</div>
</div>
<div id="id11" style="height: 25px; left: 549px; position: absolute; top: 84px; width: 41px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_41_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class10" title="Docs.html" href="Docs.html">Docs</a></p>
</div>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 545px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_10.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id12" style="height: 27px; left: 634px; position: absolute; top: 224px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_4"><a class="class11" title="Docs-wolfssl-manual-18-20-wolfcrypt-api-ripemd.html" href="Docs-wolfssl-manual-18-20-wolfcrypt-api-ripemd.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id13" style="height: 25px; left: 35px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_5"><a class="class12" title="Docs-wolfssl-manual-18-18-wolfcrypt-api-hmac.html" href="Docs-wolfssl-manual-18-18-wolfcrypt-api-hmac.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div style="height: 22px; width: 22px;  height: 22px; left: 33px; position: absolute; top: 191px; width: 22px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/PDF.png" alt="" style="border: none; height: 22px; width: 22px; "/>
</div>
<div id="id14" style="height: 25px; left: 323px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6"><a title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id15" style="height: 3421px; left: 35px; position: absolute; top: 281px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_3421" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-top: 0pt; " class="paragraph_style_7">Chapter 18: wolfCrypt API Reference<br/></p>
<p class="paragraph_style_7"><br/></p>
<p class="paragraph_style_8">18.19  Random Number Generation<br/></p>
<p class="paragraph_style_8"><br/></p>
<p class="paragraph_style_9">The functions in this section expose Random Number Generation functionality to calling applications.<span class="style_2"><br/></span></p>
<p class="paragraph_style_10"><br/></p>
<p class="paragraph_style_10"><br/></p>
<div class="paragraph paragraph_style_10"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_11.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_10"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_12">wc_InitRngCavium<br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/random.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_InitRngCavium(RNG* rng, int devId);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">Initializes RNG for use with Nitrox device.  HAVE_CAVIUM Must be set for use.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">-1</span>: rng is NULL<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Success<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9">RNG* rng: random number generator to be initialized with a Nitrox device. Regular wc_InitRng should happen afterwards<br/></p>
<p class="paragraph_style_9">int devId: nitrox device id<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">#ifdef HAVE_CAVIUM<br/></p>
<p class="paragraph_style_14">   ret = wc_InitRngCavium(&amp;rng, CAVIUM_DEV_ID);<br/></p>
<p class="paragraph_style_14">   if (ret != 0)<br/></p>
<p class="paragraph_style_14">       printf(“RNG Nitrox init for device: %d failed”, CAVIUM_DEV_ID);<br/></p>
<p class="paragraph_style_14">#endif<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See also:<br/></p>
<p class="paragraph_style_9">wc_InitRng, wc_RNG_GenerateBlock,  wc_RNG_GenerateByte, wc_FreeRng, wc_RNG_HealthTest<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_12.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_InitRng<br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/random.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_InitRng(RNG* rng);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">Gets the seed (from OS) and key cipher for rng.  rng-&gt;drbg (deterministic random bit generator) allocated (should be deallocated with wc_FreeRng).  This is a blocking operation.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: on success.<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: XMALLOC failed<br/></p>
<p class="paragraph_style_9"><span class="style_3">WINCRYPT_E</span>: wc_GenerateSeed: failed to acquire context<br/></p>
<p class="paragraph_style_9"><span class="style_3">CRYPTGEN_E</span>: wc_GenerateSeed: failed to get random<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: wc_RNG_GenerateBlock input is null or sz exceeds MAX_REQUEST_LEN<br/></p>
<p class="paragraph_style_9"><span class="style_3">DRBG_CONT_FIPS_E</span>: wc_RNG_GenerateBlock: Hash_gen returned DRBG_CONT_FAILURE<br/></p>
<p class="paragraph_style_9"><span class="style_3">RNG_FAILURE_E</span>: wc_RNG_GenerateBlock: Default error.  rng’s status originally not ok, or set to DRBG_FAILED<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9">RNG* <span class="style_3">rng</span>: random number generator to be initialized for use with a seed and key cipher<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">RNG  rng;<br/></p>
<p class="paragraph_style_14">int ret;<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">#ifdef HAVE_CAVIUM<br/></p>
<p class="paragraph_style_14">   ret = wc_InitRngCavium(&amp;rng, CAVIUM_DEV_ID);<br/></p>
<p class="paragraph_style_14">   if (ret != 0){       <br/></p>
<p class="paragraph_style_14">        printf(“RNG Nitrox init for device: %d failed”, CAVIUM_DEV_ID);<br/></p>
<p class="paragraph_style_14">        return -1;<br/></p>
<p class="paragraph_style_14">   }<br/></p>
<p class="paragraph_style_14">#endif<br/></p>
<p class="paragraph_style_14">ret = wc_InitRng(&amp;rng);<br/></p>
<p class="paragraph_style_14">if (ret != 0){<br/></p>
<p class="paragraph_style_14">   printf(“RNG init failed”);<br/></p>
<p class="paragraph_style_14">   return -1;<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See also:<br/></p>
<p class="paragraph_style_9">wc_InitRngCavium, wc_RNG_GenerateBlock,  wc_RNG_GenerateByte, wc_FreeRng, wc_RNG_HealthTest<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_13.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_RNG_GenerateBlock<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/random.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_RNG_GenerateBlock(RNG* rng, byte* output, word32 sz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">Copies a sz bytes of pseudorandom data to output. Will reseed rng if needed (blocking).<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: on success<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: an input is null or sz exceeds MAX_REQUEST_LEN<br/></p>
<p class="paragraph_style_9"><span class="style_3">DRBG_CONT_FIPS_E</span>: Hash_gen returned DRBG_CONT_FAILURE<br/></p>
<p class="paragraph_style_9"><span class="style_3">RNG_FAILURE_E</span>: Default error.  rng’s status originally not ok, or set to DRBG_FAILED<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9">RNG* <span class="style_3">rng</span>: random number generator initialized with wc_InitRng<br/></p>
<p class="paragraph_style_9">byte* <span class="style_3">output</span>: buffer to which the block is copied<br/></p>
<p class="paragraph_style_9">word32 <span class="style_3">sz</span>: size of output in bytes<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">RNG  rng;<br/></p>
<p class="paragraph_style_14">int  sz = 32;<br/></p>
<p class="paragraph_style_14">byte block[sz];<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">int ret = wc_InitRng(&amp;rng);<br/></p>
<p class="paragraph_style_14">if (ret != 0)        return -1; //init of rng failed!<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_RNG_GenerateBlock(&amp;rng, block, sz);<br/></p>
<p class="paragraph_style_14">if (ret != 0)        return -1; //generating block failed!<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See also:<br/></p>
<p class="paragraph_style_9">wc_InitRngCavium, wc_InitRng,  wc_RNG_GenerateByte, wc_FreeRng, wc_RNG_HealthTest<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_14.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_RNG_GenerateByte<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/random.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_RNG_GenerateByte(RNG* rng, byte* b);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">Calls wc_RNG_GenerateBlock to copy a byte of pseudorandom data to b. Will reseed rng if needed.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: on success<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: an input is null or sz exceeds MAX_REQUEST_LEN<br/></p>
<p class="paragraph_style_9"><span class="style_3">DRBG_CONT_FIPS_E</span>: Hash_gen returned DRBG_CONT_FAILURE<br/></p>
<p class="paragraph_style_9"><span class="style_3">RNG_FAILURE_E</span>: Default error.  rng’s status originally not ok, or set to DRBG_FAILED<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9">RNG* <span class="style_3">rng</span>: random number generator initialized with wc_InitRng<br/></p>
<p class="paragraph_style_9">byte* <span class="style_3">b</span>: one byte buffer to which the block is copied<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">RNG  rng;<br/></p>
<p class="paragraph_style_14">int  sz = 32;<br/></p>
<p class="paragraph_style_14">byte b[1];<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">int ret = wc_InitRng(&amp;rng);<br/></p>
<p class="paragraph_style_14">if (ret != 0)        return -1; //init of rng failed!<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_RNG_GenerateByte(&amp;rng, b);<br/></p>
<p class="paragraph_style_14">if (ret != 0)        return -1; //generating block failed!<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See also:<br/></p>
<p class="paragraph_style_9">wc_InitRngCavium, wc_InitRng, wc_RNG_GenerateBlock, wc_FreeRng, wc_RNG_HealthTest<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_15.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_FreeRng<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/random.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_FreeRng(RNG* rng);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">Should be called when RNG no longer needed in order to securely free drgb.  Zeros and XFREEs rng-drbg.  <br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0:</span> on success<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: rng or rng-&gt;drgb null<br/></p>
<p class="paragraph_style_9"><span class="style_3">RNG_FAILURE_E</span>: Failed to deallocated drbg<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9">RNG* <span class="style_3">rng</span>: random number generator initialized with wc_InitRng<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">   RNG  rng;<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">   int ret = wc_InitRng(&amp;rng);<br/></p>
<p class="paragraph_style_14">   if (ret != 0)        return -1; //init of rng failed!<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">   int ret = wc_FreeRng(&amp;rng);<br/></p>
<p class="paragraph_style_14">   if (ret != 0)        return -1; //free of rng failed!<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See also:<br/></p>
<p class="paragraph_style_9">wc_InitRngCavium, wc_InitRng, wc_RNG_GenerateBlock,  wc_RNG_GenerateByte, wc_RNG_HealthTest<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_16.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_RNG_HealthTest<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/random.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_RNG_HealthTest(int reseed, const byte* entropyA, word32 entropyASz,<br/></p>
<p class="paragraph_style_9">                              const byte* entropyB, word32 entropyBSz,<br/></p>
<p class="paragraph_style_9">                              byte* output, word32 outputSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">Creates and tests functionality of drbg.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: on success<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: entropyA and output must not be null.  If reseed set entropyB must not be null<br/></p>
<p class="paragraph_style_9"><span class="style_3">-1</span>: test failed<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9">int <span class="style_3">reseed</span>: if set, will test reseed functionality<br/></p>
<p class="paragraph_style_9">const byte* <span class="style_3">entropyA</span>: entropy to instantiate drgb with<br/></p>
<p class="paragraph_style_9">word32 <span class="style_3">entropyASz</span>: size of entropyA in bytes<br/></p>
<p class="paragraph_style_9">const byte* <span class="style_3">entropyB</span>: If reseed set, drbg will be reseeded with entropyB<br/></p>
<p class="paragraph_style_9">word32 <span class="style_3">entropyBSz</span>: size of entropyB in bytes<br/></p>
<p class="paragraph_style_9">byte* <span class="style_3">output</span>: initialized to random data seeded with entropyB if seedrandom is set, and entropyA otherwise<br/></p>
<p class="paragraph_style_9">word32 <span class="style_3">outputSz</span>: length of output in bytes<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">byte output[SHA256_DIGEST_SIZE * 4];<br/></p>
<p class="paragraph_style_14">const byte test1EntropyB[] = ....; // test input for reseed false<br/></p>
<p class="paragraph_style_14">const byte test1Output[] = ....;   // testvector: expected output of<br/></p>
<p class="paragraph_style_14">                                   // reseed false<br/></p>
<p class="paragraph_style_14">ret = wc_RNG_HealthTest(0, test1Entropy, sizeof(test1Entropy), NULL, 0,<br/></p>
<p class="paragraph_style_14">                        output, sizeof(output));<br/></p>
<p class="paragraph_style_14">if (ret != 0)<br/></p>
<p class="paragraph_style_14">    return -1;//healthtest without reseed failed<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">if (XMEMCMP(test1Output, output, sizeof(output)) != 0)<br/></p>
<p class="paragraph_style_14">    return -1; //compare to testvector failed: unexpected output<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">const byte test2EntropyB[] = ....; // test input for reseed<br/></p>
<p class="paragraph_style_14">const byte test2Output[] = ....;   // testvector expected output of reseed<br/></p>
<p class="paragraph_style_14">ret = wc_RNG_HealthTest(1, test2EntropyA, sizeof(test2EntropyA),<br/></p>
<p class="paragraph_style_14">                        test2EntropyB, sizeof(test2EntropyB),<br/></p>
<p class="paragraph_style_14">                        output, sizeof(output));<br/></p>
<p class="paragraph_style_14">   <br/></p>
<p class="paragraph_style_14">if (XMEMCMP(test2Output, output, sizeof(output)) != 0)<br/></p>
<p class="paragraph_style_14">    return -1; //compare to testvector failed<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See also:<br/></p>
<p class="paragraph_style_9">wc_InitRngCavium, wc_InitRng, wc_RNG_GenerateBlock,  wc_RNG_GenerateByte, wc_FreeRng<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_10"><br/></p>
<div class="paragraph paragraph_style_10"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_17.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
</div>
<div style="clear: both; height: 0px; line-height: 0px; " class="tinyText"> </div>
</div>
</div>
<div style="height: 16px; width: 20px;  height: 16px; left: 706px; position: absolute; top: 51px; width: 20px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 20px; ">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/shapeimage_18.png" alt="" style="height: 16px; left: 0px; position: absolute; top: 0px; width: 20px; "/>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 707px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/United%20Kingdom(Great%20Britain).png" alt="" style="border: none; height: 19px; width: 19px; "/>
</div>
<div id="id16" style="height: 23px; left: 328px; position: absolute; top: 48px; width: 258px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_258_23" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_15">Questions? +1 (425) 245-8247</p>
</div>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 685px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="http://www.wolfssl.jp/" title="http://www.wolfssl.jp"><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/japan.png" alt="" style="border: none; height: 19px; width: 19px; "/></a>
</div>
<div id="id17" style="height: 28px; left: 593px; position: absolute; top: 44px; width: 119px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_119_28" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class13" title="https://www.wolfssl.com/forums" href="https://www.wolfssl.com/forums">Support <span class="style_4">Forums</span></a></p>
</div>
</div>
</div>
<div id="id18" style="height: 27px; left: 59px; position: absolute; top: 190px; width: 342px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_342_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_17"><a class="class14" title="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf" href="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf">Download wolfSSL Manual (PDF)</a></p>
</div>
</div>
</div>
<div style="height: 121px; width: 155px;  height: 121px; left: 32px; position: absolute; top: 5px; width: 155px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="Home.html" title="Home.html"><img src="Docs-wolfssl-manual-18-19-wolfcrypt-api-random_files/wolfssl_logo.png" alt="" style="border: none; height: 121px; width: 156px; "/></a>
</div>
<div style="height: 3702px; line-height: 3702px; " class="spacer"> </div>
</div>
<div style="height: 114px; margin-left: 0px; position: relative; width: 770px; z-index: 15; " id="footer_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id19" style="height: 27px; left: 634px; position: absolute; top: 47px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_4"><a class="class15" title="Docs-wolfssl-manual-18-20-wolfcrypt-api-ripemd.html" href="Docs-wolfssl-manual-18-20-wolfcrypt-api-ripemd.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id20" style="height: 25px; left: 35px; position: absolute; top: 47px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_18"><a class="class16" title="Docs-wolfssl-manual-18-18-wolfcrypt-api-hmac.html" href="Docs-wolfssl-manual-18-18-wolfcrypt-api-hmac.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div id="id21" style="height: 25px; left: 323px; position: absolute; top: 47px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6"><a class="class17" title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id22" style="height: 29px; left: 35px; position: absolute; top: 85px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_29" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_19">Copyright 2017 wolfSSL Inc.  All rights reserved.</p>
</div>
</div>
</div>
</div>
</div>
</div>
 </body>

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-19-wolfcrypt-api-random.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:42:52 GMT -->
</html>
